import * as vscode from "vscode";
import { Box3Post } from "@ap/util/request";
import {
  showErrorMessage,
  showInformationMessage,
} from "@ap/util/vscode/message";
import { PackageConfig } from "@ap/types/config";
import { updatePackageJson, getPackageJson } from "@ap/util/packageJson";
export interface ExtendedQuickPickItem extends vscode.QuickPickItem {}

/**
 * 异步函数，用于将图片设置到Box3地图中。
 * @param data 包含图片信息的对象，如hash值、图片名称和数据、图片大小等。
 * @returns 无返回值。
 * 该函数首先获取'map'的package.json文件，然后利用其中的mapId构造请求体，
 * 通过调用Box3Post函数将图片信息发送到服务器，完成图片到资源的同步。
 */
export async function setBox3MapPhoto(
  data: Record<string, any>,
): Promise<undefined> {
  // 获取'map'类型的package.json文件。
  getPackageJson<PackageConfig>("map").then(async (packageJson) => {
    // 确保获取到的packageJson对象不为空。
    if (packageJson) {
      // 从packageJson中提取mapId。
      const mapId = packageJson.id;
      // 确保mapId不为空。
      if (mapId) {
        // 构造请求选项对象，包含目标URL和请求数据。
        const requestOptions = {
          url: "engine/photo",
          data: {
            mapId: mapId,
            photos: [
              {
                hash: data.hash,
                name: data.name,
                previewImage: data.data,
                size: data.size,
              },
            ],
          },
        };
        // 发送请求并等待响应。
        const response = await Box3Post(requestOptions, "同步图片至地图");
        // 检查响应是否成功，如果不成功则返回错误消息。
        if (!response || response.code !== 200) {
          showErrorMessage(`同步图片到资源失败: ${response.msg}`);
        }
      }
    }
  });
}
